package com.demarc.pesquisas.infraestrutura.persistencia;

import java.io.Serializable;

import javax.persistence.MappedSuperclass;
import javax.persistence.Version;
import javax.validation.constraints.NotNull;

import org.hibernate.annotations.Type;
import org.joda.time.DateTime;

import com.demarc.pesquisas.infraestrutura.hibernate.type.HibernateTypes;

/**
 * Define um objeto persistente no sistema.
 */
@MappedSuperclass
public abstract class ObjetoPersistenteVersionado<T extends Serializable>
		extends ObjetoValidavel {

	private DateTime ultimaAtualizacao;
	private String usuarioAtualizacao;

	/**
	 * Versão do objeto.
	 */
	@Version
	@NotNull
	@Type(type = HibernateTypes.JODA_DATE_TIME)
	public DateTime getUltimaAtualizacao() {
		return ultimaAtualizacao;
	}

	public void setUltimaAtualizacao(DateTime ultimaAtualizacao) {
		this.ultimaAtualizacao = ultimaAtualizacao;
	}

	public String getUsuarioAtualizacao() {
		return usuarioAtualizacao;
	}

	public void setUsuarioAtualizacao(String usuarioAtualizacao) {
		this.usuarioAtualizacao = usuarioAtualizacao;
	}
}